package cn.xyw.solr;

import cn.xyw.pojo.Item;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.junit.Test;

import java.util.List;

/**
 * @author Evan
 * @Title: SolrIndexQuery
 * @ProjectName solr
 * @Description: TODO
 * @date 2018/7/521:29
 */
public class SolrIndexQuery {

    /**
    　　* @Description: 以Document形式返回查询结果
    　　* @param []
    　　* @return void
    　　* @author Evan
    　　* @date 2018/7/5 21:31
    　　*/
    @Test
    public void testQueryDocument() throws SolrServerException {
         // 连接Solr服务器
        HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr/core2");

        // 创建查询对象
        SolrQuery query = new SolrQuery("title:iphone");

        // 执行查询,获取响应
        QueryResponse response = server.query(query);

        // 查询到的结果,本质是一个document集合
        SolrDocumentList results = response.getResults();
        // 获取总条目数
        System.out.println("本次搜索到:"+results.size()+"条数据");

        // 遍历集合
        for (SolrDocument result : results) {
            System.out.println("id:"+result.getFieldValue("id"));
            System.out.println("title:"+result.getFieldValue("title"));
            System.out.println("price:"+result.getFieldValue("price"));
        }

    }

    /**
     　　* @Description: 以JaavBean形式返回查询结果
     　　* @param []
     　　* @return void
     　　* @author Evan
     　　* @date 2018/7/5 21:31
     　　*/
    @Test
    public void testQueryBean() throws SolrServerException {
        // 连接Solr服务器
        HttpSolrServer server = new HttpSolrServer("http://localhost:8080/solr/core2");

        // 创建查询对象
        SolrQuery query = new SolrQuery("title:iphone");

        // 执行查询,获取响应
        QueryResponse response = server.query(query);

        // 获取查询结果,指定实体类的类型,返回实体类的集合
        List<Item> list = response.getBeans(Item.class);

        // 获取总条目数
        System.out.println("本次搜索到:"+list.size()+"条数据");

        // 遍历集合
        for (Item item : list) {
            System.out.println(item);
        }



    }
}
